package com.hfb.mashibing.alip8.interview.iq;

import java.util.ArrayList;
import java.util.List;

/*
1
1 1
2 1
1 2 1 1
1 1 1 2 2 1
3 1 2 2 1 1
观察规律,打印出来

规律（下一行是对上一行的数字和个数的描述）
*/
public class main{

    public static void main(String[] args) {
        List<Integer> line = null;
        for(int i = 1;i<7;i++){
            line = getLineNums(i,line);
            print(line);
        }
    }
    /** 根据上一行的数据获取当前行的数据
     */
    static List<Integer> getLineNums(int lineNo,List<Integer> preLine){
        List<Integer> res = new ArrayList();
        if (lineNo == 1) {
            res.add(lineNo);
        } else {
            res = countNum(preLine);
        }
        return res;
    }

    /** 根据上一行的数据获取当前行的数据（line>1）
     */
    static List<Integer> countNum(List<Integer> preLine){
        List<Integer> res = new ArrayList<>();
        int preEle = -1;
        for (int i = 0; i < preLine.size(); i++) {
            int curEle = preLine.get(i);
            if (curEle != preEle){
                res.add(1);
            }else {
                // 修正数据
                int resIndex = res.size() - 2;
                Integer resLastEle = res.get(resIndex);
                res.remove(res.size()-1);
                res.remove(resIndex);

                res.add(resLastEle+1);
            }
            res.add(curEle);
            preEle = curEle;
        }
        return res;
    }

    /** 打印行数据
     */
    static void print(List<Integer> line){
        for (int i = 0; i < line.size(); i++) {
            System.out.print(line.get(i)+ " ");
        }
        System.out.println();
    }



}
